# Copyright (c) 2011, Lawrence Livermore National Security, LLC.  
# Produced at the Lawrence Livermore National Laboratory  
# Written by Mason Kwiat and Douglas S. Miller,
# e-mail: dougmiller@llnl.gov
# LLNL-CODE-507071
# All rights reserved.  
  
# This file is part of PDV.  For details, see <URL describing code and
# how to download source>. Please also read "Additional BSD Notice".
  
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
  
# Redistributions of source code must retain the above copyright
# notice, this list of conditions and the disclaimer below.
# Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the disclaimer (as noted below)
# in the documentation and/or other materials provided with the
# distribution.  Neither the name of the LLNS/LLNL nor the names of
# its contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL LAWRENCE
# LIVERMORE NATIONAL SECURITY, LLC, THE U.S. DEPARTMENT OF ENERGY OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
    
# Additional BSD Notice  
  
# 1. This notice is required to be provided under our contract with
# the U.S.  Department of Energy (DOE).  This work was produced at
# Lawrence Livermore National Laboratory under Contract
# No. DE-AC52-07NA27344 with the DOE.
  
# 2. Neither the United States Government nor Lawrence Livermore
# National Security, LLC nor any of their employees, makes any
# warranty, express or implied, or assumes any liability or
# responsibility for the accuracy, completeness, or usefulness of any
# information, apparatus, product, or process disclosed, or represents
# that its use would not infringe privately-owned rights.
  
# 3.  Also, reference herein to any specific commercial products,
# process, or services by trade name, trademark, manufacturer or
# otherwise does not necessarily constitute or imply its endorsement,
# recommendation, or favoring by the United States Government or
# Lawrence Livermore National Security, LLC.  The views and opinions
# of authors expressed herein do not necessarily state or reflect
# those of the United States Government or Lawrence Livermore National
# Security, LLC, and shall not be used for advertising or product
# endorsement purposes.

import sys
import matplotlib
#matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
import Tkinter as Tk

import threading

class Plotter(threading.Thread):
    
    window = 'de'
    canvas = None
    
    def __init__(self, geometry):
        threading.Thread.__init__(self)
        
        self.window = geometry
        
        root = Tk.Tk()
        root.wm_minsize(300,250)
        root.wm_title('Python Data Visualizer')
        #root.wm_withdraw()
        root.wm_focusmodel('passive')
        fig = plt.figure(figsize=(1,1))
        ax = fig.add_subplot(111)
        
        self.canvas = FigureCanvasTkAgg(fig, master=root)
        self.canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
        
        toolbar = NavigationToolbar2TkAgg(self.canvas, root)
        toolbar.update()
        toolbar.config(height=100)
        toolbar.pack(side=Tk.LEFT, fill=Tk.BOTH, expand=1)
        toolbar.focus()
        
        if(self.window != 'de'):
            root.geometry(self.window[0] + 'x' + self.window[1] + '+' + self.window[2] + '+' + self.window[3])
        else:
            root.geometry('600x500+50+50')
        
        self.canvas.show()
        #root.wm_deiconify()

        #self.start()
    
    def run(self):
        pass
        #Tk.mainloop()
        
        #fig = plt.figure()
        #fig.canvas.set_window_title('Python Data Visualizer')
        #if(self.window != 'de'):
        #    fig.canvas._tkcanvas.master.geometry(self.window[0] + 'x' + self.window[1] + '+' + self.window[2] + '+' + self.window[3])
        #plt.show()

    def exit(self):
        sys.exit()
